/******************************************************************************* * Copyright (c) 2000, 2017 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * *******************************************************************************/ package org.eclipse.dltk.internal.ui.refactoring; import org.eclipse.dltk.internal.corext.refactoring.tagging.IDelegateUpdating; import org.eclipse.dltk.ui.DLTKUIPlugin; import org.eclipse.ltk.core.refactoring.Refactoring; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; /** * This is a helper class to keep a consistent design between refactorings * capable of creating delegates. * */ public class DelegateUIHelper { public static Button generateDeprecateDelegateCheckbox(Composite parent, Refactoring refactoring) { final IDelegateUpdating updating = refactoring .getAdapter(IDelegateUpdating.class); if (updating == null || !updating.canEnableDelegateUpdating()) return null; final Button button = createCheckbox(parent, getDeprecateDelegateCheckBoxTitle(), loadDeprecateDelegateSetting(updating)); updating.setDeprecateDelegates(button.getSelection()); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updating.setDeprecateDelegates(button.getSelection()); } }); return button; } public static Button generateLeaveDelegateCheckbox(Composite parent, Refactoring refactoring, boolean plural) { final IDelegateUpdating updating = refactoring .getAdapter(IDelegateUpdating.class); if (updating == null || !updating.canEnableDelegateUpdating()) return null; final Button button = createCheckbox(parent, updating.getDelegateUpdatingTitle(plural), loadLeaveDelegateSetting(updating)); updating.setDelegateUpdating(button.getSelection()); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updating.setDelegateUpdating(button.getSelection()); } }); return button; } public static void saveLeaveDelegateSetting(Button button) { saveBooleanSetting(DELEGATE_UPDATING, button); } public static void saveDeprecateDelegateSetting(Button button) { saveBooleanSetting(DELEGATE_DEPRECATION, button); } public static boolean loadLeaveDelegateSetting( IDelegateUpdating refactoring) { return getBooleanSetting(DELEGATE_UPDATING, refactoring.getDelegateUpdating()); } public static boolean loadDeprecateDelegateSetting( IDelegateUpdating refactoring) { return getBooleanSetting(DELEGATE_DEPRECATION, refactoring.getDeprecateDelegates()); } public static String getDeprecateDelegateCheckBoxTitle() { return RefactoringMessages.DelegateCreator_deprecate_delegates; } // ************** Helper methods ******************* private static final String DELEGATE_UPDATING = "delegateUpdating"; //$NON-NLS-1$ private static final String DELEGATE_DEPRECATION = "delegateDeprecation"; //$NON-NLS-1$ private DelegateUIHelper() { // no instances } private static Button createCheckbox(Composite parent, String title, boolean value) { Button checkBox = new Button(parent, SWT.CHECK); checkBox.setText(title); checkBox.setSelection(value); return checkBox; } private static boolean getBooleanSetting(String key, boolean defaultValue) { String update = DLTKUIPlugin.getDefault().getDialogSettings().get(key); if (update != null) return Boolean.valueOf(update).booleanValue(); else return defaultValue; } private static void saveBooleanSetting(String key, Button button) { if (button != null && !button.isDisposed() && button.getEnabled()) DLTKUIPlugin.getDefault().getDialogSettings().put(key, button.getSelection()); } }